<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>layui</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../lib/layui-v2.6.3/css/layui.css" media="all">
    <link rel="stylesheet" href="../css/public.css" media="all">
</head>

<body>
    <div class="layuimini-container">
        <div class="layuimini-main">

            <script type="text/html" id="toolbarDemo">
            <div class="layui-btn-container">
                <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加自定义标题 </button>
                <button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除所选标题 </button>
            </div>
        </script>

            <table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>

            <script type="text/html" id="currentTableBar">
            <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="used">使用</a>
            <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="reset">重置</a>
            <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
        </script>

        </div>
    </div>
    <script src="../lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
    <script>
        layui.use(['form', 'table'], function () {
            var $ = layui.jquery,
                form = layui.form,
                table = layui.table;

            table.render({
                elem: '#currentTableId',
                url: '/api/titles//gets',
                toolbar: '#toolbarDemo',
                cols: [[
                    { type: "checkbox", width: 50 },
                    { field: 'index', align: 'center', width: 100, title: 'ID', sort: true },
                    { field: 'titleName', align: 'center', title: '标题名称' },
                    { field: 'titleType', align: 'center', title: '所属类目' },
                    { field: 'isUsed', align: 'center', title: '是否已经被使用' },
                    { title: '操作', width: 200, toolbar: '#currentTableBar', align: "center" }
                ]],
                limits: [10, 15, 20, 25, 50, 100],
                limit: 15,
                page: true,
                skin: 'line'
            });

            // 监听搜索操作
            form.on('submit(data-search-btn)', function (data) {
                var result = JSON.stringify(data.field);
                layer.alert(result, {
                    title: '最终的搜索信息'
                });

                //执行搜索重载
                table.reload('currentTableId', {
                    page: {
                        curr: 1
                    }
                    , where: {
                        searchParams: result
                    }
                }, 'data');

                return false;
            });

            /**
             * toolbar监听事件
             */
            table.on('toolbar(currentTableFilter)', function (obj) {
                if (obj.event === 'add') {  // 监听添加操作
                    var index = layer.open({
                        title: '添加自定义标题',
                        type: 2,
                        shade: 0.2,
                        maxmin: true,
                        shadeClose: true,
                        area: ['35%', '45%'],
                        content: '../page/table/addTitle.html',
                    });
                } else if (obj.event === 'delete') {  // 监听删除操作
                    let checkData = table.checkStatus('currentTableId').data

                    let titleNames = checkData.map(function (item) {
                        return item.titleName;
                    });

                    const data = {
                        titleNames: titleNames
                    };

                    $.ajax({
                        url: '/api/titles/deleteTitles', // API 地址
                        method: 'POST', // 请求方法
                        contentType: 'application/json', // 请求内容类型
                        data: JSON.stringify(data), // 将数据转换为 JSON 字符串
                        success: function (response) {
                            // 处理成功的响应
                            layui.table.reload('currentTableId')
                            // 可以在这里显示成功提示
                            layer.msg(`删除成功`);
                        },
                        error: function (xhr, status, error) {
                            console.error('删除失败:', xhr.responseJSON);
                            layer.msg(`删除失败，${xhr.responseJSON.message}`);
                        }
                    });
                }
            });

            //监听表格复选框选择
            table.on('checkbox(currentTableFilter)', function (obj) {
                console.log(obj)
            });

            table.on('tool(currentTableFilter)', function (obj) {
                var data = obj.data;
                if (obj.event === 'used') {
                    const updateData = {
                        titleNames: [data.titleName], // 假设你的表单字段名为 titleName
                        isUsed: true
                    };

                    $.ajax({
                        url: '/api/titles/updateTitles', // API 地址
                        method: 'POST', // 请求方法
                        contentType: 'application/json', // 请求内容类型
                        data: JSON.stringify(updateData), // 将数据转换为 JSON 字符串
                        success: function (response) {
                            // 处理成功的响应
                            layui.table.reload('currentTableId')
                            // 可以在这里显示成功提示
                            layer.msg(`更新成功`);
                        },
                        error: function (xhr, status, error) {
                            // 处理错误响应
                            console.error('更新标题失败:', xhr.responseJSON);
                            // 可以在这里显示错误提示
                            layer.msg(`更新标题失败，${xhr.responseJSON.message}`);
                        }
                    });

                    return false;
                } else if (obj.event === 'reset') {
                    const updateData = {
                        titleNames: [data.titleName], // 假设你的表单字段名为 titleName
                        isUsed: false
                    };

                    $.ajax({
                        url: '/api/titles/updateTitles', // API 地址
                        method: 'POST', // 请求方法
                        contentType: 'application/json', // 请求内容类型
                        data: JSON.stringify(updateData), // 将数据转换为 JSON 字符串
                        success: function (response) {
                            // 处理成功的响应
                            layui.table.reload('currentTableId')
                            // 可以在这里显示成功提示
                            layer.msg(`更新成功`);
                        },
                        error: function (xhr, status, error) {
                            // 处理错误响应
                            console.error('更新标题失败:', xhr.responseJSON);
                            // 可以在这里显示错误提示
                            layer.msg(`更新标题失败，${xhr.responseJSON.message}`);
                        }
                    });

                    return false;
                }
                else if (obj.event === 'delete') {
                    const deleteData = {
                        titleNames: [data.titleName]
                    };

                    $.ajax({
                        url: '/api/titles/deleteTitles', // API 地址
                        method: 'POST', // 请求方法
                        contentType: 'application/json', // 请求内容类型
                        data: JSON.stringify(deleteData), // 将数据转换为 JSON 字符串
                        success: function (response) {
                            // 处理成功的响应
                            layui.table.reload('currentTableId')
                            // 可以在这里显示成功提示
                            layer.msg(`删除成功`);
                        },
                        error: function (xhr, status, error) {
                            console.error('删除失败:', xhr.responseJSON);
                            layer.msg(`删除失败，${xhr.responseJSON.message}`);
                        }
                    });

                    return false
                }
            });

        });
    </script>

</body>

</html>